package main

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

func Search(ctx *gin.Context) {
	// 获取GET传递的参数
	// 或者指定的一个参数
	// /search?kw=xxx
	kw := ctx.Query("kw")
	// 获取所有的参数
	// map[a:[1] b:[2] kw:[小米]]
	all := ctx.Request.URL.Query()
	fmt.Println(all)
	ctx.String(200, "商品搜索关键字:"+kw)
}

func Login(ctx *gin.Context) {
	// 获取传递的用户名和密码
	username := ctx.Query("username")
	password := ctx.Query("password")
	if username == "admin" && password == "123456" {
		ctx.String(200, "登录成功")
	} else {
		ctx.String(200, "登录失败")
	}
}
func Register(ctx *gin.Context) {
	// 获取POST传参中，表单格式参数
	phone := ctx.PostForm("phone")
	password := ctx.PostForm("password")
	str := fmt.Sprintf("注册成功！手机号码：%s 密码：%s", phone, password)
	ctx.String(200, str)
}

// 准备好结构体，用于保存传递的参数
type Book struct {
	Title  string  `json:"title"`
	Price  float64 `json:"price"`
	Pub    string  `json:"pub"`
	Market float64 `json:"market"`
}

func BookAdd(ctx *gin.Context) {
	var book Book
	// 将传递的JSON数据绑定给结构体变量
	err := ctx.ShouldBindJSON(&book)
	fmt.Println(book)
	if err != nil {
		ctx.String(200, "JSON数据格式错误")
	} else {
		ctx.String(200, "JSON格式的图书添加成功! 书名："+book.Title)
	}
	// title := ctx.PostForm("title")
	// price := ctx.PostForm("price")
	// pub := ctx.PostForm("pub")
	// market_price := ctx.PostForm("market_price")
	// str := fmt.Sprintf("书名：%s 价格：%s 出版社：%s 零售价：%s", title, price, pub, market_price)

	// str := "图书添加测试"
	// ctx.String(200, str)
}

func BookDetail(ctx *gin.Context) {
	// 获取路径参数
	// /book_detail/3
	bookId := ctx.Param("id")
	ctx.String(200, "获取传递的编号："+bookId)
}

func main() {
	r := gin.Default()
	r.GET("/search", Search)
	r.GET("/login", Login)
	r.POST("/register", Register)
	r.POST("/book_add", BookAdd)
	//:id 设置路径传参的参数名
	r.GET("/book_detail/:id", BookDetail)
	fmt.Println("服务器启动成功..")
	r.Run(":8080")
}
